渲染器
1. 渲染器的说明
- 渲染器就是设置所要返回的数据在浏览器的显示格式
- 注意: 不要使用 JSONRenderer 除外的渲染器,因为容易出 BUG (通俗理解: 只使用 JSONRenderer 渲染器)
2. 局部渲染器
- 局部渲染器的配置(即: renderer_classes = [渲染器, 渲染器])会覆盖掉该视图类在全局渲染器中的配置
- renderer_classes = [渲染器, 渲染器]
# views.py
from .serializer import *
from .models import *
from rest_framework import viewsets
from rest_framework.renderers import JSONRenderer, BrowsableAPIRenderer, AdminRenderer
class BookViewSet(viewsets.ModelViewSet):
"""
常用的渲染器:
JSONRenderer: 显示JSON格式(即: 没有任何样式)
BrowsableAPIRenderer: 使用 rest-framework 所提供的 html 模板显示 JSON 格式,默认显示格式
AdminRenderer: 显示表格的形式
"""
# renderer_classes = [JSONRenderer, BrowsableAPIRenderer, AdminRenderer] # 局部渲染器,同时使用 JSONRenderer、BrowsableAPIRenderer、AdminRenderer 渲染器
renderer_classes = [JSONRenderer] # 该视图类只使用 JSONRenderer 渲染器
queryset = Book.objects.all()
serializer_class = BookSerializers
- JSONRenderer 在浏览器的显示效果

- BrowsableAPIRenderer 在浏览器的显示效果,默认显示格式

- AdminRenderer 在浏览器的显示效果

3. 全局渲染器
- 全局渲染器的设置作用于所有视图类
- 可以通过设置局部渲染器来覆盖全局渲染器的设置
# settings.py
REST_FRAMEWORK = {
# "DEFAULT_AUTHENTICATION_CLASSES": ["app01.rf_auth.TokenAuth"], # 全局认证
# "DEFAULT_PERMISSION_CLASSES": ["app01.rf_permission.SVIPPermission"] # 全局权限
# "DEFAULT_THROTTLE_CLASSES": ["app01.rf_throttle.MyThrottle"], # 全局频率
# "DEFAULT_RENDERER_CLASSES": ['rest_framework.renderers.JSONRenderer', 'rest_framework.renderers.BrowsableAPIRenderer', 'rest_framework.renderers.AdminRenderer'] # 全局渲染器
"DEFAULT_RENDERER_CLASSES": ['rest_framework.renderers.JSONRenderer'] # 全局渲染器
}